#coding:utf-8

from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
from com.android.monkeyrunner import MonkeyImage
from com.android.monkeyrunner.easy import EasyMonkeyDevice
from com.android.monkeyrunner.easy import HierarchyViewer
from com.android.monkeyrunner.easy import By
from com.android.hierarchyviewerlib.device import ViewNode

#初始化 MonkeyDevice，device类型是MonkeyDevice

device = MonkeyRunner.waitForConnection()

#初始化EasyMonkeyDevice，easy_device的类型是EasyMonkeyDevice

#在android 2.3.3中，加入了新的API，即EasyMonkeyDevice
easy_device = EasyMonkeyDevice(device)

print 'start Contacts'

# 启动Contacts 应用

# 启动方法使用了adb shell中的am命令,关于am命令的使用,可以在启动adb shell后,键入am回车,里面有

# 该命令的帮助文档
device.shell('am start -a android.intent.action.MAIN -n com.android.contacts/.DialtactsContactsEntryActivity')

print 'press menu'
print 'check have any'

# shell 命令返回后,休眠两秒,等待contacts应用启动起来

MonkeyRunner.sleep(2)

# 如果联系人为空,就会出现"you don't have any..."的界面,其中显示文字的控件(TextView)的id为"emptyText"

# 这里我们检查一下,这个TextView控件是否可见，这个函数是EasyMonkeyDevice类提供的功能
text = easy_device.visible(By.id('id/emptyText'))    #这步操作耗时较长，因为按id查找控件需要时间较长
print text  #如果可见，将打印出True

 

# 通过MonkeyDevice获取HierarchyViewer对象实例

hierarchy_viewer = device.getHierarchyViewer()     

#通过HierarchyViewer获取ViewNode实例（一个viewnode实例代表一个控件）

view_node = hierarchy_viewer.findView(By.id('id/emptyText'))

#获取控件内的文本
text = view_node.namedProperties.get('mText').toString()
if text.find('have any') < 0:
    print 'not find have any!'
else:
    print 'find have any!'

print text

# 获取当前屏幕的截图

new_img = device.takeSnapshot()

# 将截图保存到文件      
new_img.writeToFile('/home/lstest/test1.png', 'png')

 

# 下面代码实现按菜单进入新建联系人界面

print "menu" 
device.press('KEYCODE_MENU', 'DOWN_AND_UP')   
device.press('KEYCODE_DPAD_UP', 'DOWN_AND_UP')
device.press('KEYCODE_DPAD_UP', 'DOWN_AND_UP')
device.press('KEYCODE_DPAD_RIGHT', 'DOWN_AND_UP')
device.press('KEYCODE_DPAD_RIGHT', 'DOWN_AND_UP')
device.press('KEYCODE_DPAD_CENTER', 'DOWN_AND_UP')

 

# 下面代码将光标移入First Name文本输入框

device.press('KEYCODE_DPAD_UP', 'DOWN_AND_UP')
device.press('KEYCODE_DPAD_UP', 'DOWN_AND_UP')
device.press('KEYCODE_DPAD_UP', 'DOWN_AND_UP')
device.press('KEYCODE_DPAD_UP', 'DOWN_AND_UP')
device.press('KEYCODE_DPAD_DOWN', 'DOWN_AND_UP')
device.type('ls_01')     # 输入联系人姓名 "ls_01"

MonkeyRunner.sleep(3)

#下面代码将光标移入Phone文本输入框
device.press('KEYCODE_DPAD_DOWN', 'DOWN_AND_UP')
device.press('KEYCODE_DPAD_DOWN', 'DOWN_AND_UP')
device.press('KEYCODE_DPAD_RIGHT', 'DOWN_AND_UP')

device.type('12345678901') #输入电话号码
easy_device.touch(By.id('id/btn_done'), 'DOWN_AND_UP') #实现点击“Done”按钮功能
MonkeyRunner.sleep(5)

 

#获取截图并保存 （截图如下：）

new_img = device.takeSnapshot()    
new_img.writeToFile('/home/lstest/test2.png', 'png')

 

#返回Idle界面

device.press('KEYCODE_BACK', 'DOWN_AND_UP')
device.press('KEYCODE_BACK', 'DOWN_AND_UP')